package com.xmutca.core.mq.consumer;

import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;

public class DirectListener implements ChannelAwareMessageListener {

    @Override
    public void onMessage(Message message, Channel channel) throws Exception {
        System.out.println("Direct queue data:" + new String(message.getBody()));

        //DeliveryTag，对于每个Channel来说，每个消息都会有一个DeliveryTag，一般用接收消息的顺序来表示：1,2,3,4 等等
        long deliveryTag = message.getMessageProperties().getDeliveryTag();

        //1. 消息确认，接收方处理完消息后，向服务器发送消息确认，服务器再删除该消息
       // channel.basicAck(deliveryTag, false);

        //2. 消息拒收，接收端在收到消息后，向服务器发送：true-放回queue，重做该任务，注意避免死循环
        //channel.basicReject(deliveryTag, true);

        //3. 消息拒收，接收端在收到消息后，向服务器发送：false-扔掉消息
        // channel.basicReject(deliveryTag, false);
    }
}